<?php

namespace app\job;

use think\Controller;
use think\Exception;
use think\queue\Job;
use think\Db;
use video\Alivideo;
use app\commons\model\CreateVideo;

/**
 * 队列上传文件
 */
class UploadFileVideo extends Controller
{
    /**
     * 执行队列
     * @param Job $job
     * @param $data
     */
    public function fire(Job $job, $data){
        $info = $this->isDone($data);
        if(!$info){
            //数据不存在或者已执行完成，删除队列
            $job->delete();
            echo '删除队列成功！数据ID：'.$data['id'].PHP_EOL;
        }else{
            echo '开始上传短视频！数据ID：'.$data['id'].PHP_EOL;
            try {
                //执行队列方法，上传文件
                if($info['yun_type'] == 0){
                    //阿里云上传合成视频
                    $video = new Alivideo();
                    $res = $video->aliVideoUpload($data['id']);
                    if($res) CreateVideo::where(['id'=>$data['id']])->update(['is_complete'=>1]);
                }else{
                    //腾讯云上传合成视频
                }
            }catch (Exception $exception){
                //异常，重新入列
                echo '数据异常：'.$exception->getMessage().PHP_EOL;
                $job->release(5);
            }
            //执行成功，删除队列
            $job->delete();
        }
        echo '短视频处理结束！数据ID：'.$data['id'].PHP_EOL;
    }

    /**
     * 验证当前数据是否执行完
     * @param $data
     */
    private function isDone($data){
        $info = CreateVideo::where(['id'=>$data['id']])->find();
        if(!$info){
            return false;
        }
        if($info['is_complete'] == 1){
            return false;
        }
        return $info;
    }
}